perm filename PQ[HAK,HPM] blob
sn#035413 filedate 1974-05-24 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE PEEKER
C00005 00003 DEVNAM←←0
C00008 00004 BUFPNT: MOVE E,DEVCHR(DDB)
C00011 00005 SIXOUT: MOVEI C,6
C00013 ENDMK
C⊗;
TITLE PEEKER
A←1
B←2
C←3
D←4
E←5
F←6
G←7
H←10
DAT←12
SPACE←13
DDB←14
PTR←15
I←16
P←17
PDLLEN←←100
TTYTAB←←220
DEFINE PEEK(AC,ADDR)
< MOVEI AC,ADDR
CALL AC,['PEEK ']
>
LOC 124
REE
RELOC
PDL: BLOCK PDLLEN
STRT: CALLI
PEEK A,221
MOVE B,[POINT 9,A]
SETZM MAXTTY#
ILDB C,B
ADDM C,MAXTTY
TLNE B,770000
JRST .-3
OUTSTR[ASCIZ/TTY #?/]
SETZ A,
INLOP: INCHWL B
CAIN B,15
JRST INLOP
CAIL B,"0"
CAILE B,"7"
JRST LAST
IMULI A,10
ADDI A,-60(B)
JRST INLOP
LAST: CAMGE A,MAXTTY
CAIE B,12
JRST [ CLRBFI
OUTSTR[ASCIZ/HO HO!
/]
JRST STRT]
MOVEM A,TAB#
PEEK A,TTYTAB
ADDM A,TAB ;LOC OF TTYTAB ENTRY
SETZM FLAG
REE: PEEK A,37 ;GET RMEMSIZ-1
HRLZ A,A
JUMPGE A,.+2
HRRI A,540000
CALL A,['SETPR2']
HALT STRT
MOVEI A,-400000(A)
MOVNM A,TENADR#
SPCWAR 'SSW'
SETZM DONE
SETO A,
TTYUUO 6,A
CAME A,[-1]
TLNN A,420000
JRST [ SETOM NODPY#
OUTSTR[ASCIZ/I OR O?/]
INCHRW A
SETZM FLAG
CAIE A,"I"
SETOM FLAG
MOVE A,[400000,,SPW]
CALLI A,400003
OUTSTR HEADER
OUTSTR TEXT
CALLI 1,12]
SETZM NODPY
TLNE A,20000
HLLOS NODPY
MOVEI A,DPYBUF
SKIPE NODPY
JRST [ MOVE A,DDWRD1
MOVEM A,DPYBUF
MOVE A,DDWRD2
MOVEM A,LINSET
JRST WRDDON]
SETZM DPYBUF
MOVE A,IIIWRD
MOVEM A,LINSET
WRDDON: MOVE A,[400017,,SPW]
CALLI A,400003 ;START SPACEWAR
PPACT 0 ;SHUT OFF PAGE PRINTER
INCHWL
CLRBFI
SETCMM FLAG#
JRST .-3
DEVNAM←←0
DEVCHR←←1
DEVIOS←←2
DEVMOD←←4
DEVLOG←←5
DEVBUF←←6
ACTBTS←←11
TTIBUF←←16
TTOBUF←←25
TISYNC←←24
BUF←←0
PUTR←←1
TAKR←←3
DEFINE INC(N)
< REPEAT N,<IDPB SPACE,PTR
>>
DEFINE PUT(CHR)
< MOVEI A,CHR
IDPB A,PTR
>
SPW: AOSL YET#
SKIPE DONE
CALLI 400024 ;NOT DONE YET
MOVNI A,4
MOVEM A,YET
MOVE P,[IOWD PDLLEN,PDL];GET STACK
DOIT: CONSZ 40 ;6 OR 10?
JRST [ MOVE I,TENADR ;10 IS EASY!
JRST TENWIN]
TLO 2,777000 ;INFINITE PROT.
DATAO 2 ;SET IT
MOVNS I,2 ;GET INDEX
TENWIN: MOVE PTR,[POINT 7,TEXT] ;BYTE POINTER FOR TEXT
MOVEI SPACE,40
MOVE DDB,TAB
ADDI DDB,(I)
MOVE DDB,(DDB)
JUMPE DDB,NODDB
ADDI DDB,(I) ;ADDRESS OF DDB
MOVE B,DEVNAM(DDB) ;DEVICE NAME
PUSHJ P,SIXOUT
INC 2
MOVE B,DEVLOG(DDB)
PUSHJ P,SIXOUT
INC 2
MOVE B,DEVCHR(DDB)
PUSHJ P,OCTPNT
INC 2
MOVE B,DEVIOS(DDB)
PUSHJ P,OCTPNT
INC 2
MOVE B,DEVMOD(DDB)
PUSHJ P,OCTPNT
MOVEI B,[ASCIZ/
ACTBITS: /]
PUSHJ P,STRING
MOVE B,ACTBTS(DDB)
PUSHJ P,OCTPNT
INC 1
MOVE B,ACTBTS+1(DDB)
PUSHJ P,OCTPNT
INC 1
MOVE B,ACTBTS+2(DDB)
PUSHJ P,OCTPNT
INC 1
MOVE B,ACTBTS+3(DDB)
PUSHJ P,OCTPNT
SKIPE FLAG
JRST NOTIN
MOVEI B,[ASCIZ/
TISYNC: /]
PUSHJ P,STRING
SKIPL TISYNC(DDB)
JRST NOTNEG
PUT "-"
NOTNEG: MOVM A,TISYNC(DDB)
PUSHJ P,OCTNUM
MOVEI B,[ASCIZ/
INPUT BUFFER:
/]
PUSHJ P,STRING
MOVEI DAT,TTIBUF(DDB)
PUSHJ P,BUFPNT
JRST NOTOUT
NOTIN: MOVEI B,[ASCIZ/
OUTPUT BUFFER:
/]
PUSHJ P,STRING
MOVEI DAT,TTOBUF(DDB)
PUSHJ P,BUFPNT
NOTOUT: MOVEI B,[ASCIZ/
/]
PUSHJ P,STRING
JRST 2,@[.+1]
MOVEI A,2(PTR)
SUBI A,DPYBUF ;CALC WORD COUNT
MOVEM A,HEAD+1
MOVEI A,1
IORM A,@LASTCLOBBERED#
SETZM 1(PTR)
MOVEI A,1(PTR)
MOVEM A,LASTCLOBBERED
SKIPL NODPY
DPYOUT HEAD
CALLI 400024
NODDB: MOVEI B,[ASCIZ/
****** NO DDB POINTER ******/]
PUSHJ P,STRING
JRST NOTOUT
BUFPNT: MOVE E,DEVCHR(DDB)
ANDI E,3777
ADD E,BUF(DAT)
ADDI E,(I)
HRRZM E,STOPR#
MOVE F,PUTR(DAT)
ADDI F,(I)
TLZ F,1
MOVEM F,SPUTR#
MOVE A,TAKR(DAT)
ADDI A,(I)
TLZ A,1
MOVEM A,STAKR#
MOVEI C,13
MOVEI D,14
MOVEI G,177
SETZB H,COUNT#
SKIPL NODPY ;TTY?
JRST TLOP
MOVEI C,"$"
MOVEI D,"%"
TLOP: IBP F
HRRZ A,F
CAML A,STOPR
JRST [ HRR F,BUF(DAT)
ADDI F,1(I)
TLZ F,1
HRRZ A,SPUTR
CAIGE A,(F) ;PUTR AT FRONT?
POPJ P, ;YES!
JRST .+1]
LDB A,F
MOVE B,A
ANDI B,177
SKIPG NODPY
JRST NODD2
CAIN H,12
CAIN B,15
JRST NODD2
MOVEI H,15
IDPB H,PTR
MOVEI H,40
MOVE B,COUNT
IDPB H,PTR
SOJG B,.-1
NODD2: CAIN H,15
CAIN A,12
JRST NODD1
MOVEI H,12
IDPB H,PTR
NODD1: SKIPG NODPY
JRST NODD3
CAIE H,15
CAIE B,12
JRST NODD3
MOVEI H,40
IDPB H,PTR
MOVEI H,15
IDPB H,PTR
NODD3: CAIN B,15
JRST [ MOVEI H,40
SKIPN COUNT
SKIPG NODPY
CAIA
IDPB H,PTR
SETZM COUNT
JRST .+1]
TRZE A,200
IDPB C,PTR
TRZE A,400
IDPB D,PTR
SKIPG NODPY
JRST NODD
CAIE A,177
CAIN A,11
IDPB G,PTR
NODD: SKIPE A
IDPB A,PTR
MOVE H,A
CAME F,STAKR
JRST NOTAKR
CAIN H,15
JRST [ MOVEI B,12
IDPB B,PTR
SETZ H,
JRST .+1]
MOVEI B,[ASCIZ/*** TAKR →→→/]
PUSHJ P,STRING
SETZM COUNT
JRST FIN
NOTAKR: CAIE H,15
CAIN H,12
JRST FIN
AOS A,COUNT
CAIG A,80
JRST FIN
MOVEI H,15
IDPB H,PTR
MOVEI H,12
IDPB H,PTR
SETZM COUNT
FIN: CAME F,SPUTR
JRST TLOP
POPJ P,
SIXOUT: MOVEI C,6
SIX1: SETZ A,
LSHC A,6
ADDI A,40
IDPB A,PTR
SOJG C,SIX1
CPOPJ: POPJ P,
OCTPNT: MOVEI C,=12
OCT1: SETZ A,
LSHC A,3
ADDI A,60
IDPB A,PTR
SOJG C,OCT1
POPJ P,
OCTNUM: IDIVI A,10
HRLM B,(P)
JUMPE A,.+2
PUSHJ P,OCTNUM
HLRZ A,(P)
ADDI A,60
IDPB A,PTR
POPJ P,
STRING: HRLI B,(<POINT 7,0>)
ST1: ILDB A,B
JUMPE A,CPOPJ
IDPB A,PTR
JRST ST1
DEFINE CW(C1,B1,C2,B2,C3,B3)
{ <BYTE(8)<B1>,<B2>,<B3>(3)<C1>,<C2>,<C3>>!4 }
DDWRD1: CW 1,46,2,0,3,1
DDWRD2: CW 4,0,5,10,5,10
IIIWRD: BYTE(11)<-1000>,600(3)0,0(2)1,2(4)6
HEAD: 600000,,DPYBUF
0
DONE: 0
LINSET
DPYBUF: 0
LINSET: 0
HEADER: ASCID/
DEVNAM DEVLOG DEVCHR DEVIOS DEVMOD
/
1
TEXT: REPEAT 1000,<1>
BUFEND: 1
0
END STRT